// import {baseURL} from '@/src/lib/env'
const path = require('path');

function resolve(dir) {
  return path.join(__dirname, dir) //path.join(__dirname)设置绝对路径
}


//引入该插件
const CompressionWebpackPlugin = require("compression-webpack-plugin")
//匹配此 {RegExp} 的资源
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i




module.exports = {
  indexPath:"index.html",
  publicPath: './',
  productionSourceMap: false,
  devServer: {
    port: 8060,
    proxy: {
      
      // 测试环境
      "actionDispatcher.do": {
          //要访问的跨域的api的域名
          target: "https://njkzls.m.51kezhi.cn/wap/",
          changOrigin: true,
        
      },

      
    }
  },
  lintOnSave: false,
  
  chainWebpack: config => {

    config.resolve.alias
      .set('@', resolve('./src'))
      .set('components', resolve('./src/components'));

    const oneOfsMap = config.module.rule('scss').oneOfs.store
    oneOfsMap.forEach(item => {
        item
            .use('sass-resources-loader')
            .loader('sass-resources-loader')
            .options({
                // 要公用的scss的路径
                // resources: './src/assets/common.scss'
                resources: ['./src/assets/common.scss']
            })
            .end()
    })

    if (process.env.NODE_ENV === 'production') {
         
        // 清除css，js版本号
        config.output.filename(`js/[name].js?${new Date().getTime()}`, config).end();
        config.output.chunkFilename(`js/[name].js?${new Date().getTime()}`).end();
      
        // // // 为生产环境修改配置...
        // config.plugin('extract-css').tap(() => [{
        //     filename: `static/css/[name].css`,
        //     chunkFilename: `static/css/[name].css`
        // }])
    }

   // 发布模式
   config.when(process.env.NODE_ENV === "production", (config) => {
    
    // config.set("externals", {
    //   vue: "Vue",
    //   axios: "axios",
    //   nprogress: "NProgress",
    //   // vant: "vant",
    //   // vConsole: 'vconsole'
     
    // });
    config.plugin("html").tap((args) => {
      args[0].isProd = true;
      return args;
    });
  });

  },
  configureWebpack: config => {

    if(process.env.NODE_ENV === "production") {
      const plugins = []
      // start 生成 gzip 压缩文件
      plugins.push(
          new CompressionWebpackPlugin({
              filename: "[path].gz[query]", //目标资源名称
              algorithm: "gzip",
              test: productionGzipExtensions, //处理所有匹配此 {RegExp} 的资源
              threshold: 10240,//只处理比这个值大的资源。按字节计算(楼主设置10K以上进行压缩)
              minRatio: 0.8 //只有压缩率比这个值小的资源才会被处理
          })
      );
      // End 生成 gzip 压缩文件
      config.plugins = [...config.plugins, ...plugins];

    }
 
   
  }

}